package com.hellpro.lolbox.mine.presenter;

import android.content.SharedPreferences;
import android.text.TextUtils;

import com.hellpro.lolbox.mine.view.IPhoneLoginActivity;
import com.hellpro.lolbox.utils.ToastShowCenter;

import cn.bmob.v3.BmobSMS;
import cn.bmob.v3.exception.BmobException;
import cn.bmob.v3.listener.QueryListener;
import cn.bmob.v3.listener.UpdateListener;

/**
 * 类描述:
 * 创建人:阿犇
 * 创建时间:2016/10/25
 * 备注:
 */

public class PhoneSmsCodePresenter {

    private IPhoneLoginActivity mIPhoneLoginActivity;

    public PhoneSmsCodePresenter(IPhoneLoginActivity iPhoneLoginActivity) {
        this.mIPhoneLoginActivity = iPhoneLoginActivity;
    }

    /**
     * 类描述:
     * 创建人:阿犇
     * 创建时间:2016/10/25
     * 备注:获取验证码
     */

    public void setSmsCode() {
        final String mPhoneNO = mIPhoneLoginActivity.getEtPhoneNo().getText().toString();
        if (isMobileNo(mPhoneNO)) {
            BmobSMS.requestSMSCode(mPhoneNO, "模板名称", new QueryListener<Integer>() {
                @Override
                public void done(Integer integer, BmobException e) {
                    if (e == null) {
                        ToastShowCenter.centerToast(mIPhoneLoginActivity.getPhoneSmsContext(), "验证码获取成功");
                    } else {
                        ToastShowCenter.centerToast(mIPhoneLoginActivity.getPhoneSmsContext(), "验证码获取失败"+e.toString());
                    }
                }
            });
        } else {
            ToastShowCenter.centerToast(mIPhoneLoginActivity.getPhoneSmsContext(), "手机号格式错误");
        }
    }

    /**
     * 类描述:
     * 创建人:阿犇
     * 创建时间:2016/10/25
     * 备注:处理手机号快速登录
     */

    public void setPhoneLogin() {
        final String mPhoneNO = mIPhoneLoginActivity.getEtPhoneNo().getText().toString();
        String smsCode = mIPhoneLoginActivity.getEtSmsCode().getText().toString();

        if (!mPhoneNO.isEmpty()&&isMobileNo(mPhoneNO)&&!smsCode.isEmpty()){
            //验证验证码
            BmobSMS.verifySmsCode(mPhoneNO, smsCode, new UpdateListener() {
                @Override
                public void done(BmobException e) {
                    if (e==null){
                        SharedPreferences sp = mIPhoneLoginActivity.getSp();
                        SharedPreferences.Editor edit = sp.edit();
                        edit.putBoolean("isLogin", true);
                        edit.commit();
                    }
                }
            });
        }else {
            ToastShowCenter.centerToast(mIPhoneLoginActivity.getPhoneSmsContext(),"手机号或验证码错误");
        }
    }

    /**
     * 验证手机格式
     */
    public static boolean isMobileNo(String mobiles) {
    /*
    移动：134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
    联通：130、131、132、152、155、156、185、186
    电信：133、153、180、189、（1349卫通）
    总结起来就是第一位必定为1，第二位必定为3或5或8，其他位置的可以为0-9
    */
        String telRegex = "[1][3578]\\d{9}";//"[1]"代表第1位为数字1，"[358]"代表第二位可以为3、5、8中的一个，"\\d{9}"代表后面是可以是0～9的数字，有9位。
        return !TextUtils.isEmpty(mobiles) && mobiles.matches(telRegex);
    }

}
